package algorithm.middle;

import javafx.scene.input.DataFormat;

import javax.lang.model.type.ReferenceType;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: algorithm.middle
 * @Author: 江岸
 * @CreateTime: 2022-01-18 23:05
 * @Description: 给定一个 24 小时制（小时:分钟 "HH:MM"）的时间列表，找出列表中任意两个时间的最小时间差并以分钟数表示。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：timePoints = ["23:59","00:00"]
 * 输出：1
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/minimum-time-difference
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class FindMinDifference539 {
    public int findMinDifference(List<String> timePoints) {
        ArrayList<Integer> list = new ArrayList<>();
        for (String o:timePoints){
            String[] split = o.split(":");
            int i = Integer.parseInt(split[0]) * 60 + Integer.parseInt(split[1]);
            list.add(i);
            list.add(i+1440);
        }
        list.sort(Comparator.comparing(o->o));
        int n = Integer.MAX_VALUE;
        for (int i=1;i<list.size();i++){
            n = Math.min(n,list.get(i)-list.get(i-1));
        }
        return n;
    }

}
